/*
 * @Author: zhang xinzheng
 * @Date: 2022-01-05 15:15:27
 * @LastEditors: zhang xinzheng
 * @LastEditTime: 2022-01-07 15:41:52
 * @Description: 环形图配置文件
 * @FilePath: \college_project\report-service\src\Charts\CircleChart.ts
 */

import DataSource, { DataSourceMgr } from "../dataSource/dataSource"
import Charts, { IChartConfig, ChartConfigMgr } from "./Charts"

export interface ICircleChartOptions {
    tooltip: {
        trigger: 'item' // tooltip信息（item）
    },
    legend: {
        left: string
    }, // 图例信息
    series: Array<{
        name: string, // 系列名称，用于tooltip的显示
        type: 'pie', // 饼图类型, 默认pie
        radius: Array<string>, // 环形内外径（['40%', '70%']）
        avoidLabelOverlap: boolean, // 是否启用防止标签重叠策略
        label: {
            show: boolean, // 是否显示标签
            position: string, // 标签的位置('top')
        }, // 图形上的文本标签(值，名称等)
        emphasis: {
            label: {
                show: boolean, // 是否显示标签
                fontSize: string, // 字体大小
                fontWeight: string, // 是否加粗
            }
        }, // 标签属性
        labelLine: {
            show: boolean // 是否展示label线，默认false
        }, // 是否启用防止标签重叠策略
        data: Array<{ value: number, name: string }> // 图表数据
    }>
}

// 环形图信息继承图形配置
export interface ICircleChartConfig extends IChartConfig {
    // 配置项ChartOptions
    chartOptions: ICircleChartOptions
}

export default class CircleChart extends Charts<ICircleChartConfig> {
    constructor(config: { [key: string]: any }, dataSource: DataSourceMgr, id?: string) {
        super(config, dataSource, id)
    }

    computedConifgStrategy(data: any) {
        let options = <Map<keyof ICircleChartConfig, any>>this.getConfig();
        let circleConfig = options.get("chartOptions");
        const dataLength = options.get("limit") || 0;
        if (dataLength) {
            data = data.slice(0, dataLength);
        }
        try {
            // $originData： 后台返回数据
            const dataConfFn = new Function("$originData", circleConfig.legend.data);
            // const indicatorConfFn = new Function("$originData",circleConfig.radar.indicator);
            // const seriesConfFn = new Function("$originData",circleConfig.series[0].data);
            console.log(dataConfFn);
            // console.log("第一个数据结构：",dataConfFn(data));
            // console.log("data",dataConfFn(data));
            // console.log("indicator",indicatorConfFn(data));
            // console.log("seriesData",seriesConfFn(data));
            // circleConfig.legend.data = dataConfFn(data);
            // circleConfig.radar.indicator = indicatorConfFn(data);
            // circleConfig.series[0].data = seriesConfFn(data);
            // console.log("seriesData================================");
            // this.setConfig("ChartOptions",circleConfig)
        } catch (error) {
            console.error(error)
        }
    }
}